﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraEditors;

using BLL;
using DTO;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;

namespace CRM.GUI.QLKhachHang
{
    public partial class frmTransfer : DevExpress.XtraEditors.XtraForm
    {
        public frmTransfer()
        {
            InitializeComponent();
            grdTaskCA1.BestFitColumns();
            grdTaskCA1.OptionsView.ColumnAutoWidth = false;
            grdTaskCA1.ScrollStyle = ScrollStyleFlags.LiveHorzScroll | ScrollStyleFlags.LiveVertScroll;
            grdTaskCA1.HorzScrollVisibility = ScrollVisibility.Always;
            grdTaskCA1.OptionsSelection.MultiSelect = true;
            grdTaskCA1.OptionsSelection.MultiSelectMode = GridMultiSelectMode.RowSelect;
            grdTaskCA2.BestFitColumns();
            grdTaskCA2.OptionsView.ColumnAutoWidth = false;
            grdTaskCA2.ScrollStyle = ScrollStyleFlags.LiveHorzScroll | ScrollStyleFlags.LiveVertScroll;
            grdTaskCA2.HorzScrollVisibility = ScrollVisibility.Always;
            grdcolCount.UnboundType = DevExpress.Data.UnboundColumnType.Integer;
            grdTaskCA1.CustomUnboundColumnData += grdTaskCA1_CustomUnboundColumnData;
            gridColumn1.UnboundType = DevExpress.Data.UnboundColumnType.Integer;
            grdTaskCA2.CustomUnboundColumnData += grdTaskCA2_CustomUnboundColumnData;
            
        }

        private int IDCA1 = -1;
        private int IDCA2 = -1;

        private void cbxRegion1_SelectionChangeCommitted(object sender, EventArgs e)
        {
            BLsupervisor sup = new BLsupervisor();
            cbxCAName1.EditValue = null;
            cbxCAName1.Properties.DataSource = sup.GetListCAandTask((int)cbxRegion1.SelectedValue);
            cbxCAName1.Properties.DisplayMember = "Name";
            cbxCAName1.Properties.ValueMember = "ID";

            grdTaskList1.DataSource = null;
            IDCA1 = -1;
        }

        private void grdTaskCA1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
        {
            if (e.IsGetData)
                e.Value = e.ListSourceRowIndex + 1;
        }

        private void grdTaskCA2_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
        {
            if (e.IsGetData)
                e.Value = e.ListSourceRowIndex + 1;
        }

        private void cbxRegion2_SelectionChangeCommitted(object sender, EventArgs e)
        {
            BLsupervisor sup = new BLsupervisor();
            cbxCAName2.EditValue = null;
            cbxCAName2.Properties.DataSource = sup.GetListCAandTask((int)cbxRegion2.SelectedValue);
            cbxCAName2.Properties.DisplayMember = "Name";
            cbxCAName2.Properties.ValueMember = "ID"; 

            grdTaskList2.DataSource = null;
            IDCA2 = -1;
        }

        private void btnToRight_Click(object sender, EventArgs e)
        {
            if (IDCA1 != -1 && IDCA2 != -1)
            {
                if (IDCA1 != IDCA2)
                {
                    BLsupervisor sup = new BLsupervisor();
                    int[] SelectedRow = grdTaskCA1.GetSelectedRows();
                    foreach (int i in SelectedRow)
                    {
                        var TransferItem = (TaskListEntity)grdTaskCA1.GetRow(i);
                        sup.TransferTask(TransferItem.CustomerID, IDCA1, IDCA2);
                    }
                    grdTaskList1.DataSource = sup.LoadTaskList(IDCA1);
                    grdTaskList2.DataSource = sup.LoadTaskList(IDCA2);
                }
                else
                {
                    MessageBox.Show("Không được chọn trùng một nhân viên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                
            }
            else
            {
                MessageBox.Show("Chưa chọn nhân viên để chuyển", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnToLeft_Click(object sender, EventArgs e)
        {           
            if (IDCA1 != -1 && IDCA2 != -1)
            {
                if (IDCA1 != IDCA2)
                {
                    BLsupervisor sup = new BLsupervisor();
                    int[] SelectedRow = grdTaskCA2.GetSelectedRows();
                    foreach (int i in SelectedRow)
                    {
                        var TransferItem = (TaskListEntity)grdTaskCA2.GetRow(i);
                        sup.TransferTask(TransferItem.CustomerID, IDCA2, IDCA1);
                    }
                    grdTaskList1.DataSource = sup.LoadTaskList(IDCA1);
                    grdTaskList2.DataSource = sup.LoadTaskList(IDCA2);
                }
                else
                {
                    MessageBox.Show("Không được chọn trùng một nhân viên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
            else
            {
                MessageBox.Show("Chưa chọn nhân viên để chuyển", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void cbxRegion1_Click(object sender, EventArgs e)
        {
            BLsupervisor sup = new BLsupervisor();
            cbxRegion1.DataSource = SharedData.RegionList.Where(a => a.RegionLevel == 1).ToList();
            cbxRegion1.DisplayMember = "RegionName";
            cbxRegion1.ValueMember = "Region_Code";
        }

        private void cbxRegion2_Click(object sender, EventArgs e)
        {
            BLsupervisor sup = new BLsupervisor();
            cbxRegion2.DataSource = SharedData.RegionList.Where(a => a.RegionLevel == 1).ToList();
            cbxRegion2.DisplayMember = "RegionName";
            cbxRegion2.ValueMember = "Region_Code"; 
        }

        private void cbxCAName1_EditValueChanged(object sender, EventArgs e)
        {
            BLsupervisor sup = new BLsupervisor();
            if (cbxCAName1.EditValue != null)
            {
                IDCA1 = (int)cbxCAName1.EditValue;
                if (IDCA1 != -1)
                {
                    grdTaskList1.DataSource = sup.LoadTaskList(IDCA1);
                }
            }
        }

        private void cbxCAName2_EditValueChanged(object sender, EventArgs e)
        {
            BLsupervisor sup = new BLsupervisor();
            if (cbxCAName2.EditValue != null)
            {
                IDCA2 = (int)cbxCAName2.EditValue;
                if (IDCA2 != -1)
                {
                    grdTaskList2.DataSource = sup.LoadTaskList(IDCA2);
                }
            }
        }

        private void btnAllToRightMu_Click(object sender, EventArgs e)
        {
            if (IDCA1 != -1 && IDCA2 != -1)
            {
                if (IDCA1 != IDCA2)
                {
                    try
                    {
                        BLsupervisor sup = new BLsupervisor();
                        foreach (TaskListEntity item in sup.LoadTaskList((int)cbxCAName1.EditValue))
                        {
                            sup.TransferTask(item.CustomerID, (int)cbxCAName1.EditValue, (int)cbxCAName2.EditValue);
                        }
                        grdTaskList1.DataSource = sup.LoadTaskList((int)cbxCAName1.EditValue);
                        grdTaskList2.DataSource = sup.LoadTaskList((int)cbxCAName2.EditValue);
                    }
                    catch
                    {
                        return;
                    }
                }
                else
                {
                    MessageBox.Show("Không được chọn trùng một nhân viên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Chưa chọn nhân viên để chuyển", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnAllToLeftMu_Click(object sender, EventArgs e)
        {
            if (IDCA1 != -1 && IDCA2 != -1)
            {
                if (IDCA1 != IDCA2)
                {
                    try
                    {
                        BLsupervisor sup = new BLsupervisor();
                        foreach (TaskListEntity item in sup.LoadTaskList((int)cbxCAName2.EditValue))
                        {
                            sup.TransferTask(item.CustomerID, (int)cbxCAName2.EditValue, (int)cbxCAName1.EditValue);
                        }
                        grdTaskList1.DataSource = sup.LoadTaskList((int)cbxCAName1.EditValue);
                        grdTaskList2.DataSource = sup.LoadTaskList((int)cbxCAName2.EditValue);
                    }
                    catch
                    {
                        return;
                    }
                }
                else
                {
                    MessageBox.Show("Không được chọn trùng một nhân viên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);  
                }
            }
            else
            {
                MessageBox.Show("Chưa chọn nhân viên để chuyển", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }






    }
}